package com.cictec.middleware.tde.rm.protocol.rm.encode;

import java.nio.ByteBuffer;

import com.cictec.middleware.commons.utils.BinaryUtils;
import com.cictec.middleware.tde.exception.MessageEncoderException;
import com.cictec.middleware.tde.rm.protocol.AbstractMessageEncoder;
import com.cictec.middleware.tde.rm.protocol.TerminalMessage;
import com.cictec.middleware.tde.rm.protocol.annotion.TerminalMessageEncoder;
import com.cictec.middleware.tde.rm.protocol.rm.message.Rm0x81PlatformMessage;
import com.cictec.middleware.tde.rm.protocol.rm.utils.RmBinaryUtils;


/**
 * 
 * @author lhl
 *
 */
@TerminalMessageEncoder(0x81)
public class Rm0x81Encoder extends AbstractMessageEncoder{

	@Override
	public byte[] encode(TerminalMessage msg) throws MessageEncoderException {

		Rm0x81PlatformMessage pdm=(Rm0x81PlatformMessage)msg;
		
		ByteBuffer out=ByteBuffer.allocate(256);
		
		RmBinaryUtils.dateToDwordRM(pdm.getCreateTime(), out);
		BinaryUtils.intToUnsignedByte(pdm.getMessageType(),out);
		BinaryUtils.intToUnsignedByte(pdm.getResponseType(),out);
		BinaryUtils.intToUnsignedByte(pdm.getDisplayOn(),out);
		BinaryUtils.intToUnsignedByte(pdm.getVoiceType(),out);
		BinaryUtils.intToUnsignedByte(pdm.getDisplayTimes(),out);
		byte[] msgBytes = BinaryUtils.stringToBytes(pdm.getContent());
		pdm.setContentLength(msgBytes.length);
		BinaryUtils.intToUnsignedByte(pdm.getContentLength(),out);
		out.put(msgBytes);
		BinaryUtils.intToWord(pdm.getVoiceFileNumber(),out);
		
		return toBytes(out);
	}

}
